﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Drawing;
using Website.Logger;
using DAL;
using BOL;
using System.Web.Script.Services;
using System.Web.Services;

using UtilityExtensions;

namespace UILGestion.AlmacenAdmin
{
    public partial class NotaIngresoInsertForm : System.Web.UI.Page
    {





        [WebMethod(), ScriptMethod()]
        public static string GetRecursos(String prefixText, String contextKey)
        {
            //aqui solo los   item de orden de compra pendientes por recepcion
            InsumoBL bol = new InsumoBL();
            return bol.getInsumoStockAll(prefixText, 20);


        }

        public NotaIngresoInsertForm()
        {


            bol = new NotaSalidaBL();


        }
        private NotaSalidaBL bol;
        private static string rutaOC;
        private static string tituloTabCliente;
        private static string ÌDTabCliente;

       
        private static int idTipoInsumo;


        [WebMethod(), ScriptMethod()]
        public static string GetProveedor(String prefixText, String contextKey)
        {

            ProveedorBL bol = new ProveedorBL();
            return bol.getProveedorAll(prefixText, 20);
        }

      
        private void LoadFromOrdenCompra(int idDocumento)
        {
           
            NotaIngresoBL bol = new NotaIngresoBL();
            NotaIngresoInfo notaIngreso = bol.LoadFromOrdComp(idDocumento);
            DataTable items = Util.EntidadToDataTable(bol.GetNotaIngresoItemFromOrdComp(idDocumento));


            tipoDocDropDownList.SelectedValue = notaIngreso.idDocumentoTipo.ToString();
            //numDocumentoLabel.Text = not;
            motivoDropDownList.Text = notaIngreso.motivo.ToString();
            //documentoTextBox.Text = notaIngreso.documentoRef;
            fechaEmisonTextBox.Text = notaIngreso.fecha.ToShortDateString();
            observacionTextBox.Text = notaIngreso.observacion;
            
            proveedorEditTextBox.Text = notaIngreso.proveedor;
            idMotivo.Value = "1";
            
            idproveedor.Value = notaIngreso.idProveedor.ToString();

            DataSet ds = new DataSet();
            ds.AcceptChanges();
            ds.Tables.Add(items);
           
            Session[idColeccionList.Value] = ds;

        }


        private void LoadFromNotaSalida(int idNotasalida)
        {
           
           
           NotaSalida notasalida= DbUtil.Db.NotaSalidas.Single(p=>p.idInternal==idNotasalida);

           DataTable items = Util.EntidadToDataTable(new NotaIngresoBL().GetNotaIngresoItemFromNotaSalida(idNotasalida));


           //tipoDocDropDownList.SelectedValue = notaIngreso.idDocumentoTipo.ToString();
           ////numDocumentoLabel.Text = not;
           //motivoDropDownList.Text = notaIngreso.motivo.ToString();
           ////documentoTextBox.Text = notaIngreso.documentoRef;
           //fechaEmisonTextBox.Text = notaIngreso.fecha.ToShortDateString();
           //observacionTextBox.Text = notaIngreso.observacion;

           //proveedorEditTextBox.Text = notaIngreso.proveedor;
           idMotivo.Value = "13";

           //idproveedor.Value = notaIngreso.idProveedor.ToString();

           DataSet ds = new DataSet();
           ds.AcceptChanges();
           ds.Tables.Add(items);

           Session[idColeccionList.Value] = ds;

        }

        
        private void FormatForm()
        {

            //--------------------
            int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
                idEmpleadoEmisor,
                5, //Nota Ingreso
                int.Parse(idObra.Value),
                2); //Crear
            //------------------------- 
            pnlMain.Visible = true;
            PanelBody.Visible = true;
            PanelButtom.Visible = true;

            // los paneles presentes en el formulario
            Obra obra= DbUtil.Db.Obras.Single(p=>p.idInternal==int.Parse(idObra.Value));
            idTipoInsumo = obra.getTipoInsumoFromObra();
           


            idColeccionList.Value = Parametros.GenerarID().ToString();
            //DataSet dt = new DataSet();
            //dt.Tables.Add();
            Session[idColeccionList.Value] = new DataSet();
            
            ShowAllComboBoxNew();

            fechadocumentoTextBox.Text = DateTime.Now.ToShortDateString();
            fechaEmisonTextBox.Text = DateTime.Now.ToShortDateString();
            

            if (type.Value == "E")
            {
                
                //LoadEntidad(int.Parse(internalid.Value));
              
            }

            if (type.Value == "A")
            {

                string idOrdenCompraList = (string)Request.QueryString["idOCcol"];

                if (idOC.Value != "")
                {
                    //si ya esta seleccionado 
                    LoadFromOrdenCompra(int.Parse(idOC.Value));
                    
                    motivoDropDownList.Enabled = false;
                    
                    proveedorEditTextBox.Enabled = false;
                    proveedorEditTextBox.Visible = true;
                    provLabel1.Visible = true;
                    tipocambLabel.Visible = false;
                    tipoCamInput.Visible = false;
                }
                if (idNS.Value != "")
                {
                    //si ya esta seleccionado 
                    LoadFromNotaSalida(int.Parse(idNS.Value));
                    
                    motivoDropDownList.Enabled = false;
                    
                    proveedorEditTextBox.Enabled = false;
                    proveedorEditTextBox.Visible = true;
                    provLabel1.Visible = true;
                    tipocambLabel.Visible = false;
                    tipoCamInput.Visible = false;
                }
                
                

                motivoDropDownList.Text = DbUtil.Db.MotivoItems.Single(p => p.idinternal == int.Parse(idMotivo.Value)).descripcion;

                
                //de acuerdo al motivo


                if (idMotivo.Value=="2")
                {
                    //ajuste de mercaderia
                    //motivo ajuste de inventario
                   //oculta columnas del grid
                    proveedorEditTextBox.Visible=false;
                    provLabel1.Visible = false;
                    tipocambLabel.Visible=true;
                    tipoCamInput.Visible=true;

                    DataTable itemss = Util.EntidadToDataTable(new NotaIngresoBL().GetNotaIngresoItem(0,2));

                    DataSet ds = new DataSet();
                    ds.Tables.Add(itemss);
                    Session[idColeccionList.Value] = ds;
                 }

                if (idMotivo.Value == "11")
                {
                    //DEVOLUCION DE MERCADERIA  EN NOTA DE CREDITO
                 
                    tipoDocDropDownList.SelectedValue = "20"; //SIN GUIA
                    tipoDocDropDownList.Enabled = false;
                    fechadocumentoTextBox.Enabled = false;
                    ImageButton1.Enabled = false;
                    documentoTextBox.Text = "DEV NC";
                    documentoTextBox.Enabled = false;
                    motivoDropDownList.Enabled = false;
                    
                    proveedorEditTextBox.Enabled = false;
                    proveedorEditTextBox.Visible = true;
                    provLabel1.Visible = true;
                    tipocambLabel.Visible = false;
                    tipoCamInput.Visible = false;
                    
                                       
                }


               

                if ((idMotivo.Value == "1" | idMotivo.Value == "11") & idOrdenCompraList.HasValue())
                {
                    //compra de mercaderia
                    
                    List<int> lista = (List<int>)Session[idOrdenCompraList];
                    BOL.NotaIngresoBL bol= new NotaIngresoBL();
                    List<NotaIngresoItemInfo> items=new List<NotaIngresoItemInfo>();
                    foreach (var item in lista)
	                {
                        items.AddRange(bol.GetNotaIngresoItemFromOrdComp(item));
	                }

                    OrdenCompra oc = DbUtil.Db.OrdenCompras.Single(p=>p.idInternal==lista.First());

                    DataTable itemsdt = Util.EntidadToDataTable(items);
                    DataSet ds = new DataSet();
                    ds.AcceptChanges();
                    ds.Tables.Add(itemsdt);

                    Session[idColeccionList.Value] = ds;


                    //oculta columnas del grid
                    proveedorEditTextBox.Visible = true;
                    provLabel1.Visible = true;
                    tipocambLabel.Visible = false;
                    tipoCamInput.Visible = false;
                    //
                    //cargamos  los valores

                    
                    proveedorEditTextBox.Text = oc.proveedor;
                    idproveedor.Value = oc.idProveedor.ToString();
                }
             
                    
               

                NotaIngreso rec = new NotaIngreso();

                numDocumentoLabel.Text = rec.getCorrelativo(DbUtil.Db, int.Parse(idAlmacen.Value));
                DataBindItems();
            }
            
            
        }


        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!Page.IsPostBack)
                {
                    idObra.Value = (string)Request.QueryString["idObra"];
                    idOC.Value = (string)Request.QueryString["idOC"];
                    idNS.Value = (string)Request.QueryString["idNS"];
                    type.Value = (string)Request.QueryString["type"];
                    internalid.Value = (string)Request.QueryString["id"];
                    idMotivo.Value = (string)Request.QueryString["idMotivo"];



                    
                    idAlmacen.Value = (string)Request.QueryString["idAlmacen"];

                    menuObraCtrl1.loadMenuAlmacen(int.Parse(idObra.Value), int.Parse(idAlmacen.Value)); 
                    
                FormatForm();

               

                }


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

        //private void setEstadistica()
        //{
        //    List<view_ComparativoItem> itemList=
        //        (List<view_ComparativoItem>)Session[idobjectdsLabel.Value];



        //    if (itemList.Count() > 0)
        //        {
        //            totalBaseTextBox.Text = itemList.Sum(p => p.totalComparar).ToString();
        //            totalBaseTextBox.Text = itemList.ElementAt(0).simbolBase.ToString() + " " + totalBaseTextBox.Text;
        //            totalComparativoLabel.Text = itemList.Sum(p => p.totalBaseOrig).ToString();
        //            totalComparativoLabel.Text = itemList.ElementAt(0).simbolBase.ToString() + " " + itemList.Sum(p => p.totalBaseOrig).ToString();
        //        using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
        //        {
        //            EstructuraCosto ec = _db.EstructuraCosto.Single(p => p.idInternal == int.Parse(idEstructuraCosto.Value));

        //            estructuraCostoLabel.Text = ec.descripcion;
        //            descripcionInsertTextBox.Text = ec.descripcion;

        //        }

        //    }

          
        //    CabeceraUpdatePanel.Update();
            
        //}
    
        private void ShowAllComboBoxNew()
        {
            ListValueBL bl= new ListValueBL();
            List<ListValueInfo> tipodocumentos = bl.GetDocumentoTipoNotaIngreso();
          
            List<ListValueInfo> Almacenes=bl.GetAlmacenes(int.Parse(idObra.Value));
                
            tipoDocDropDownList.DataValueField="idInternal";
            tipoDocDropDownList.DataTextField="descripcion";

          
            

          
            tipoDocDropDownList.DataSource = tipodocumentos;
           
            motivoDropDownList.DataBind();
            tipoDocDropDownList.DataBind();



            if (idAlmacen.Value == "")
            {
                //lista de notas de ingreso
                Response.Redirect("~/ObraAdmin/NotaIngresoListForm.aspx?idObra=" + idObra.Value);
                throw new Exception("Defina Almacen");
            }

        }
        protected void btnContinue_OnClick(object sender, EventArgs e)
        {
         

            try
            {
                if ((sender as Button).Text == refreshButton.Text)
                {
                    FormatForm();
                }
                if ((sender as Button).Text == nuevoButton.Text)
                {
                    Response.Redirect("../AlmacenAdmin/NotaIngresoInsertOPT2Form.aspx?&idAlmacen="+idAlmacen.Value+"&idObra=" + idObra.Value + "&type=A&idMotivo=" + idMotivo.Value);
                }


                if ((sender as Button).Text == saveButton.Text)
                    {
                    //saveButton.Enabled = false;

            
                    // verificamos si es de actualizacion o ingreso

            
                            if (type.Value == "E")
                            {

                                Edit();
                            }
                            if (type.Value == "A")
                            {
                                Insert();
                            }
                

                            if (internalid.Value!="")
                            {
                    
                                // ejecutar un script 
                             //   Response.Write("javascript:history.back();");
                             //   ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                             //"uniqueKey" + DateTime.Now, "javascript:history.back();", true);
                                Response.Redirect("NotaIngresoReadForm.aspx?&idAlmacen="+idAlmacen.Value+"&id=" + internalid.Value + "&idObra=" + idObra.Value, false);
                            }         


            }
                if ((sender as Button).Text == cancelarButton.Text)
            {
                Response.Redirect("NotaIngresoListForm.aspx?idAlmacen="+idAlmacen.Value+"&idObra=" + idObra.Value);
            }

            

                
              
                   }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);
                saveButton.Enabled = true;

            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);
                saveButton.Enabled = true;
            }
        }

        private void Insert()
        {
            

            System.IFormatProvider MiFp =new System.Globalization.CultureInfo("es-ES", false);

            DataSet dsColeccion = (DataSet)Session[idColeccionList.Value];
            int idOrigen=0;
            int? idprove=null;
            decimal? tipoCambiodollar = null;
            if (idMotivo.Value == "1" | idMotivo.Value == "11")
                idOrigen = 1;
            if (idMotivo.Value == "13" )
                idOrigen = 13;
            
            
            if (idproveedor.Value != "")
                idprove =int.Parse(idproveedor.Value);
            if (tipoCamInput.Text != "")
                tipoCambiodollar = decimal.Parse(tipoCamInput.Text);




                NotaIngresoBL recep = new NotaIngresoBL();
                int id = recep.Add(idprove,
                    "",
                    documentoTextBox.Text,
                    int.Parse(tipoDocDropDownList.SelectedValue),
                    int.Parse(idAlmacen.Value),
                    DateTime.ParseExact(fechaEmisonTextBox.Text, "dd/MM/yyyy", MiFp),
                    DateTime.ParseExact(fechadocumentoTextBox.Text, "dd/MM/yyyy", MiFp),
                    int.Parse(idMotivo.Value),
                   observacionTextBox.Text,
                   int.Parse(idObra.Value),
                   idOrigen,
                   tipoCambiodollar,
                   dsColeccion);

            internalid.Value =id.ToString();
        }

        private void Edit()
        {
            System.IFormatProvider MiFp = new System.Globalization.CultureInfo("es-ES", false);

            DataSet dsColeccion = (DataSet)Session[idColeccionList.Value];
          
            //NotaIngresoBL recep = new NotaIngresoBL();
            //int id = recep.Update(int.Parse(internalid.Value),
            //    documentoTextBox.Text,
            //    int.Parse(tipoDocDropDownList.SelectedValue),
            //    DateTime.ParseExact(fechaEmisonTextBox.Text, "dd/MM/yyyy", MiFp),
            //    observacionTextBox.Text,
                        
            //   dsColeccion);

        }

        //private void LoadEntidad(int idInternal)
        //{

        //    NotaIngresoBL bol = new NotaIngresoBL();
        //    NotaIngresoInfo notaIngreso = bol.Load(idInternal);
        //    DataTable items = Util.EntidadToDataTable(bol.GetNotaIngresoItem(idInternal), notaIngreso.i);


        //    tipoDocDropDownList.SelectedValue = notaIngreso.idDocumentoTipo.ToString();
        //    numDocumentoLabel.Text = notaIngreso.numDocumento;
        //    motivoDropDownList.Text = notaIngreso.motivo.ToString();
        //    documentoTextBox.Text = notaIngreso.documentoRef;
        //    fechaEmisonTextBox.Text = notaIngreso.fecha.ToShortDateString();
        //    observacionTextBox.Text = notaIngreso.observacion;



        //    DataSet ds = new DataSet();

        //    ds.Tables.Add(items);
        //    ds.AcceptChanges();
        //    Session[idColeccionList.Value] = ds;

        //}
        #region "Item eventos"

        private void DataBindItems()
        {
            DataSet ItemList = (DataSet)Session[idColeccionList.Value];

            NotaIngresoItemInfo nIItem = new NotaIngresoItemInfo();

            itemGridView.DataSource = ItemList.Tables[nIItem.GetType().Name];
            itemGridView.DataBind();


            //antes por el databind
            if (idMotivo.Value == "2")
            { itemGridView.ShowFooter = true; }
            else
            { itemGridView.ShowFooter = false; }

            if (itemGridView.Rows.Count == 0)
            {
                // agregamos un registro debido al footer

                List<NotaIngresoItemInfo> drw = new List<NotaIngresoItemInfo>();
                nIItem.idObra = 0;
                nIItem.idOrdenCompra = 0;
                nIItem.idinternal = 0;
                nIItem.DescripcionRef = "";
                nIItem.formulario = "";
                nIItem.idRefItem = null;
                
                drw.Add(nIItem);
                itemGridView.DataSource = drw;
                itemGridView.DataBind();
                itemGridView.Rows[0].Visible = false;
            }

            //por los motivos

            if (idMotivo.Value=="1") //OC
            {
                itemGridView.Columns[4].Visible = true; //origen
                itemGridView.Columns[5].Visible = false; //precio
                itemGridView.FooterRow.Visible = false;
            }
            if (idMotivo.Value == "2")
            {
                itemGridView.Columns[4].Visible = false; //origen
                itemGridView.Columns[5].Visible = true; //precio
                itemGridView.Columns[0].Visible = false; //precio
                itemGridView.FooterRow.Visible = true;
            }


            ItemUpdatePanel.Update();
        }
        protected void EditItem(object sender, GridViewEditEventArgs e)
        {
            try
            {
                
                itemGridView.EditIndex = e.NewEditIndex;
              

                //if (type.Value == "E")
                //{
                //    string idInternal = ((GridView)itemGridView).DataKeys[e.NewEditIndex].Values[0].ToString();
                //    BOL.NotaIngresoBL bol = new NotaIngresoBL();
                //    NotaIngresoItemInfo niInfo = bol.LoadNotaIngresoItemOrigen(int.Parse(idInternal));
                //    TextBox idobratxt = ((TextBox)itemGridView.Rows[itemGridView.EditIndex].FindControl("cantidadOrigEditTextBox"));
                //    idobratxt.Text = niInfo.cantidadOrig.ToString();
                //}

                DataBindItems();
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void CancelEditItem(object sender, GridViewCancelEditEventArgs e)
        {
            try
            {
                itemGridView.EditIndex = -1;
                DataBindItems();
                

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void UpdateItem(object sender, GridViewUpdateEventArgs e)
        {
            try
            {

                string idInternal = ((GridView)sender).DataKeys[e.RowIndex].Values[0].ToString();
                string cantidad = ((System.Web.UI.WebControls.TextBox)itemGridView.Rows[e.RowIndex].FindControl("cantidadEditTextBox")).Text;
                string cantidadOrig = ((System.Web.UI.WebControls.TextBox)itemGridView.Rows[e.RowIndex].FindControl("cantidadOrigEditTextBox")).Text;
                string precioUnit = ((System.Web.UI.WebControls.TextBox)itemGridView.Rows[e.RowIndex].FindControl("precioUnitEditTextBox")).Text;

                NotaIngresoItemInfo ItemsInfo = new NotaIngresoItemInfo();
                DataSet recursos = (DataSet)Session[idColeccionList.Value];
                
                DataRow drw = (from a in recursos.Tables[ItemsInfo.GetType().Name].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted)
                               where a.Field<int>("idInternal") == int.Parse(idInternal)
                               select a).First();
                ItemsInfo = (NotaIngresoItemInfo)Util.DataRowToEntidad(drw, ItemsInfo.GetType());

                //no mayor al origen
                if (idMotivo.Value!="2")
                    if (Convert.ToDecimal(cantidad) > ItemsInfo.cantidadOrig)
                    {
                        throw new Exception("No puede ser mayor  al  Origen");
                    }
                ItemsInfo.cantidad = decimal.Parse(cantidad);
                ItemsInfo.PrecioUnit = decimal.Parse(precioUnit);
                

                Util.EntidadUpdateDataRow(ItemsInfo,drw);

                Session[idColeccionList.Value] = recursos;
                itemGridView.EditIndex = -1;
                //itemGridView.FooterRow.Visible = true; solo editar
                DataBindItems();
                
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void Deleteitem(object sender, EventArgs e)
        {
            try
            {

                System.Web.UI.WebControls.ImageButton lnkRemove = (System.Web.UI.WebControls.ImageButton)sender;
                int idInternal = int.Parse(lnkRemove.CommandArgument.ToString());


                DataSet Items = (DataSet)Session[idColeccionList.Value];
                NotaIngresoItemInfo item= new NotaIngresoItemInfo();
                DataRow drw = (from a in Items.Tables[item.GetType().Name].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted)
                               where a.Field<int>("idInternal") == idInternal
                                   select a).First();

                Items.Tables[item.GetType().Name].Rows.Remove(drw);
                //drw.Delete(); errores por  el caso de bol
                
                Session[idColeccionList.Value.ToString()] = Items;
                DataBindItems();
                   
                

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void AddNewItem(object sender, EventArgs e)
        {
            try
            {
                string codigo = ((System.Web.UI.WebControls.TextBox)itemGridView.FooterRow.FindControl("codigoInsertTextBox")).Text;
                if (codigo == "")
                {
                    throw new Exception("Ingrese Recurso");
                }
                string descripcion = ((System.Web.UI.WebControls.TextBox)itemGridView.FooterRow.FindControl("descripcionInsertTextBox")).Text;
                string unidad = ((System.Web.UI.WebControls.TextBox)itemGridView.FooterRow.FindControl("unidadInsertTextBox")).Text;
                string cantidad = ((System.Web.UI.WebControls.TextBox)itemGridView.FooterRow.FindControl("cantidadinsertTextBox")).Text;
                string precioUnit = ((System.Web.UI.WebControls.TextBox)itemGridView.FooterRow.FindControl("precioUnitInsertTextBox")).Text;

                
                DataSet Recursos = (DataSet)Session[idColeccionList.Value];
                InsumoBL bol = new InsumoBL();

                
               
               // DataRow drw = Recursos.Tables[niInfo.GetType().Name].NewRow();
                DAL.Insumo insumo = bol.getInsumoFromCod(codigo.Trim());

                //para los casos de ajuste de inventario
                // no debe ingresar mas de un insumo en la misma nota ingreso

                var q = from a in Recursos.Tables["NotaIngresoItemInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted)
                        where a.Field<int>("idInsumo")==insumo.idInternal
                        select a;
                if (q.Count() > 0)
                {
                    throw new Exception("El Insumo se encuentra registrado, verifique.");
                }

                NotaIngresoItemInfo ItemsInfo = new NotaIngresoItemInfo(
                                    Parametros.GenerarID(),
                                    0,
                                    insumo.idInternal,
                                    insumo.codigo,
                                    insumo.descripcion,
                                    insumo.InsumoUnidad.abreviacion,
                                    Convert.ToDecimal(cantidad),
                                    0,
                                    null,
                                    2,
                                    "",
                                    decimal.Parse(precioUnit),
                                    0,null,null,null,
                                    "");

                DataRow drw = Util.EntidadToDataRow(ItemsInfo);
                Recursos.Tables[ItemsInfo.GetType().Name].ImportRow(drw);
                Session[idColeccionList.Value] = Recursos;

                DataBindItems();
                

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        #endregion






    }

}
